package com.dcy.common.utils;

import cn.dev33.satoken.session.SaSession;
import com.dcy.common.constant.Constant;
import com.dcy.common.model.LoginAccount;
import com.dcy.common.utils.satoken.StpAdminUtil;

import java.util.Optional;

/**
 * @author dcy
 * @description 用户相关
 * @createTime 2022/12/25 12:06
 */
public class AdminLoginUtil {

    /**
     * 登录
     *
     * @param loginAccount
     * @return
     */
    public static String login(LoginAccount loginAccount) {
        // sa-token 登录
        StpAdminUtil.login(loginAccount.getId());
        // 获取session
        SaSession session = StpAdminUtil.getTokenSession();
        // 设置用户信息
        session.set(Constant.SESSION_USER_KEY, loginAccount);
        // 获取token
        return StpAdminUtil.getTokenInfo().getTokenValue();
    }

    /**
     * 获取用户id
     *
     * @return
     */
    public static String getUserId() {
        return Optional.ofNullable(getUserInfo()).map(LoginAccount::getId).orElse(null);
    }

    /**
     * 获取用户名称
     *
     * @return
     */
    public static String getUserName() {
        return Optional.ofNullable(getUserInfo()).map(LoginAccount::getUsername).orElse(null);
    }

    /**
     * 获取用户信息
     *
     * @return
     */
    public static LoginAccount getUserInfo() {
        if (StpAdminUtil.isLogin()) {
            SaSession session = StpAdminUtil.getTokenSession();
            return session.getModel(Constant.SESSION_USER_KEY, LoginAccount.class);
        }
        return null;
    }

}
